package com.tinet.sistReserva.model;

import java.io.Serializable;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;

import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

import javax.persistence.Table;

import org.hibernate.annotations.Type;

/**
 * 
 * Clase Reserva.
 * 
 * @author Frmancil
 */
@Entity
@Table(name = "Reserva")
public class Reserva implements Serializable {

    /**
     * Numero serialVersionUID.
     */
    private static final long serialVersionUID = 1L;
/**
 * Instanciar relacion Many to one con usuario.
 */
    @ManyToOne(optional = false, targetEntity = Usuario.class)
    @JoinColumn(name = "Usuario_username", referencedColumnName = "username")
    private Usuario usuario = new Usuario();
/**
 * Instanciar relacion Many to one con sala.
 */
    @ManyToOne(optional = false, targetEntity = Sala.class)
    @JoinColumn(name = "Sala_id_sala", referencedColumnName = "id_sala")
    private Sala sala = new Sala();

    /**
     * Atributo reserva, clave primaria de la tabla.
     */
    @Id
    @Column(name = "id_reserva")
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id_reserva;
    /**
     * Atributo fecha_reserva.
     */
    @Column(name = "fecha_reserva")
    private Date fecha_reserva;
    /**
     * Atributo hora_inicio.
     */
    @Column(name = "hora_inicio")
    private Date hora_inicio;
    /**
     * Atributo hora_fin.
     */
    @Column(name = "hora_fin")
    private Date hora_fin;
    /**
     * Atributo estaReservado, si es verdadero la sala se encuentra reservada,
     * si es falso, esta disponible.
     */
    @Type(type = "org.hibernate.type.NumericBooleanType")
    @Column(name = "estaReservado")
    private Boolean estaReservado;

    public int getId_reserva() {
        return id_reserva;
    }

    public void setId_reserva(int id_reserva) {
        this.id_reserva = id_reserva;
    }

    public Date getFecha_reserva() {
        return fecha_reserva;
    }

    public void setFecha_reserva(Date fecha_reserva) {
        this.fecha_reserva = fecha_reserva;
    }

    public Date getHora_inicio() {
        return hora_inicio;
    }

    public void setHora_inicio(Date hora_inicio) {
        this.hora_inicio = hora_inicio;
    }

    public Date getHora_fin() {
        return hora_fin;
    }

    public void setHora_fin(Date hora_fin) {
        this.hora_fin = hora_fin;
    }

    public Boolean getEstaReservado() {
        return estaReservado;
    }

    public void setEstaReservado(Boolean estaReservado) {
        this.estaReservado = estaReservado;
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    public Sala getSala() {
        return sala;
    }

    public void setSala(Sala sala) {
        this.sala = sala;
    }

}
